package com.ai.dmc.utils.xml;

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * 
 * <p>Title: XmlWriterUtil.java</p>
 * <p>Description: xml文件写入操作工具类。</p>
 * <p>对于XML的写入操作，dom4j已经进行了很好的封装。所以本类中只是封装了创建org.dom4j.Document对象和保存org.dom4j.Document对象的方法。<br />
 * 在使用xml进行写入操作时，可能会用到下面的方法(其他更多信息请查阅dom4j的api)：
 * <table style="border:1px solid #A4A4A4;" width="100%">
 * 	<tr>
 * 		<td>对象类型</td>
 * 		<td>方法</td>
 * 		<td>说明</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Document</td>
 * 		<td>addElement(String elementName)</td>
 * 		<td>对文档添加节点信息</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Document</td>
 * 		<td>addComment(String comment)</td>
 * 		<td>在文档中添加注释</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Element</td>
 * 		<td>addElement(String subElementName)</td>
 * 		<td>对某个节点添加子节点</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Element</td>
 * 		<td>addAttribute(String attrName, attrValue)</td>
 * 		<td>对某个节点添加属性及设置属性值</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Element</td>
 * 		<td>addText(String text)</td>
 * 		<td>对某个节点添加内容信息</td>
 * 	</tr>
 * 	<tr>
 * 		<td>org.dom4j.Element</td>
 * 		<td>addComment(String comment)</td>
 * 		<td>对某个节点添加注释</td>
 * 	</tr>
 * </table>
 * </p>
 * <p>Copyright: Copyright (c) 2009</p>
 * <p>Company: 亚信科技（中国）有限公司</p>
 * @author chenhui2
 * @version 1.0 
 *
 */
public class XmlWriterUtil {
	
	/**
	 * 创建新的Document对象
	 * @return
	 * Document
	 *
	 */
	public Document createNewDocument() {
		 Document document = DocumentHelper.createDocument();
		 return document;
	}
	
	/**
	 * 保存文档对象doc，如果有中文字符，请调用saveXmlFile(Document doc, String fileName, String encoding)
	 * @param doc		org.dom4j.Document对象
	 * @param fileName	指定的文件路径及文件名
	 * @throws IOException
	 * void
	 *
	 */
	public void saveXmlFile(Document doc, String fileName) throws IOException {
		XMLWriter writer = new XMLWriter(new FileWriter(fileName));
		writer.write(doc);
		writer.close();
	}
	/**
	 * 按指定编码格式保存文档对象doc，用于有中文字符的xml文件。
	 * @param doc		org.dom4j.Document对象
	 * @param fileName	指定的文件路径及文件名
	 * @param encoding	指定文档编码格式，如有中文设置为GBK
	 * @throws IOException
	 * void
	 *
	 */
	public void saveXmlFile(Document doc, String fileName, String encoding) throws IOException {
		if(encoding==null || encoding.trim().length()<1) {
			encoding = "GBK";
		}
		OutputFormat format = OutputFormat.createPrettyPrint();
		format.setEncoding(encoding);    // 指定XML编码        
		XMLWriter writer = new XMLWriter(new FileOutputStream(fileName),format);
		writer.write(doc);
		writer.close();
	}
	

}
